{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Your first convolutional neural network"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# imports"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using TensorFlow backend.\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "\n",
    "from keras.layers import Input, Flatten, Dense, Conv2D, BatchNormalization, LeakyReLU, Dropout, Activation\n",
    "from keras.models import Model\n",
    "from keras.optimizers import Adam\n",
    "from keras.utils import to_categorical\n",
    "import keras.backend as K \n",
    "\n",
    "from keras.datasets import cifar10"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "NUM_CLASSES = 10"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "(x_train, y_train), (x_test, y_test) = cifar10.load_data()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "x_train = x_train.astype('float32') / 255.0\n",
    "x_test = x_test.astype('float32') / 255.0\n",
    "\n",
    "y_train = to_categorical(y_train, NUM_CLASSES)\n",
    "y_test = to_categorical(y_test, NUM_CLASSES)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.36862746"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_train[54, 12, 13, 1] "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# architecture"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "input_layer = Input(shape=(32,32,3))\n",
    "\n",
    "conv_layer_1 = Conv2D(\n",
    "    filters = 10\n",
    "    , kernel_size = (4,4)\n",
    "    , strides = 2\n",
    "    , padding = 'same'\n",
    "    )(input_layer)\n",
    "\n",
    "conv_layer_2 = Conv2D(\n",
    "    filters = 20\n",
    "    , kernel_size = (3,3)\n",
    "    , strides = 2\n",
    "    , padding = 'same'\n",
    "    )(conv_layer_1)\n",
    "\n",
    "flatten_layer = Flatten()(conv_layer_2)\n",
    "\n",
    "output_layer = Dense(units=10, activation = 'softmax')(flatten_layer)\n",
    "\n",
    "model = Model(input_layer, output_layer)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "input_1 (InputLayer)         (None, 32, 32, 3)         0         \n",
      "_________________________________________________________________\n",
      "conv2d_1 (Conv2D)            (None, 16, 16, 10)        490       \n",
      "_________________________________________________________________\n",
      "conv2d_2 (Conv2D)            (None, 8, 8, 20)          1820      \n",
      "_________________________________________________________________\n",
      "flatten_1 (Flatten)          (None, 1280)              0         \n",
      "_________________________________________________________________\n",
      "dense_1 (Dense)              (None, 10)                12810     \n",
      "=================================================================\n",
      "Total params: 15,120\n",
      "Trainable params: 15,120\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "model.summary()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "input_layer = Input((32,32,3))\n",
    "\n",
    "x = Conv2D(filters = 32, kernel_size = 3, strides = 1, padding = 'same')(input_layer)\n",
    "x = BatchNormalization()(x)\n",
    "x = LeakyReLU()(x)\n",
    "\n",
    "\n",
    "x = Conv2D(filters = 32, kernel_size = 3, strides = 2, padding = 'same')(x)\n",
    "x = BatchNormalization()(x)\n",
    "x = LeakyReLU()(x)\n",
    "\n",
    "\n",
    "x = Conv2D(filters = 64, kernel_size = 3, strides = 1, padding = 'same')(x)\n",
    "x = BatchNormalization()(x)\n",
    "x = LeakyReLU()(x)\n",
    "\n",
    "\n",
    "x = Conv2D(filters = 64, kernel_size = 3, strides = 2, padding = 'same')(x)\n",
    "x = BatchNormalization()(x)\n",
    "x = LeakyReLU()(x)\n",
    "\n",
    "\n",
    "x = Flatten()(x)\n",
    "\n",
    "x = Dense(128)(x)\n",
    "x = BatchNormalization()(x)\n",
    "x = LeakyReLU()(x)\n",
    "x = Dropout(rate = 0.5)(x)\n",
    "\n",
    "x = Dense(NUM_CLASSES)(x)\n",
    "output_layer = Activation('softmax')(x)\n",
    "\n",
    "model = Model(input_layer, output_layer)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "input_2 (InputLayer)         (None, 32, 32, 3)         0         \n",
      "_________________________________________________________________\n",
      "conv2d_3 (Conv2D)            (None, 32, 32, 32)        896       \n",
      "_________________________________________________________________\n",
      "batch_normalization_1 (Batch (None, 32, 32, 32)        128       \n",
      "_________________________________________________________________\n",
      "leaky_re_lu_1 (LeakyReLU)    (None, 32, 32, 32)        0         \n",
      "_________________________________________________________________\n",
      "conv2d_4 (Conv2D)            (None, 16, 16, 32)        9248      \n",
      "_________________________________________________________________\n",
      "batch_normalization_2 (Batch (None, 16, 16, 32)        128       \n",
      "_________________________________________________________________\n",
      "leaky_re_lu_2 (LeakyReLU)    (None, 16, 16, 32)        0         \n",
      "_________________________________________________________________\n",
      "conv2d_5 (Conv2D)            (None, 16, 16, 64)        18496     \n",
      "_________________________________________________________________\n",
      "batch_normalization_3 (Batch (None, 16, 16, 64)        256       \n",
      "_________________________________________________________________\n",
      "leaky_re_lu_3 (LeakyReLU)    (None, 16, 16, 64)        0         \n",
      "_________________________________________________________________\n",
      "conv2d_6 (Conv2D)            (None, 8, 8, 64)          36928     \n",
      "_________________________________________________________________\n",
      "batch_normalization_4 (Batch (None, 8, 8, 64)          256       \n",
      "_________________________________________________________________\n",
      "leaky_re_lu_4 (LeakyReLU)    (None, 8, 8, 64)          0         \n",
      "_________________________________________________________________\n",
      "flatten_2 (Flatten)          (None, 4096)              0         \n",
      "_________________________________________________________________\n",
      "dense_2 (Dense)              (None, 128)               524416    \n",
      "_________________________________________________________________\n",
      "batch_normalization_5 (Batch (None, 128)               512       \n",
      "_________________________________________________________________\n",
      "leaky_re_lu_5 (LeakyReLU)    (None, 128)               0         \n",
      "_________________________________________________________________\n",
      "dropout_1 (Dropout)          (None, 128)               0         \n",
      "_________________________________________________________________\n",
      "dense_3 (Dense)              (None, 10)                1290      \n",
      "_________________________________________________________________\n",
      "activation_1 (Activation)    (None, 10)                0         \n",
      "=================================================================\n",
      "Total params: 592,554\n",
      "Trainable params: 591,914\n",
      "Non-trainable params: 640\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "model.summary()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# train"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "opt = Adam(lr=0.0005)\n",
    "model.compile(loss='categorical_crossentropy', optimizer=opt, metrics=['accuracy'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 50000 samples, validate on 10000 samples\n",
      "Epoch 1/10\n"
     ]
    },
    {
     "ename": "KeyboardInterrupt",
     "evalue": "",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-11-10b06c61fca5>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      4\u001b[0m           \u001b[0;34m,\u001b[0m \u001b[0mepochs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m10\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      5\u001b[0m           \u001b[0;34m,\u001b[0m \u001b[0mshuffle\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 6\u001b[0;31m           , validation_data = (x_test, y_test))\n\u001b[0m",
      "\u001b[0;32m~/.virtualenvs/gdl_code/lib/python3.6/site-packages/keras/engine/training.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, **kwargs)\u001b[0m\n\u001b[1;32m   1037\u001b[0m                                         \u001b[0minitial_epoch\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0minitial_epoch\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1038\u001b[0m                                         \u001b[0msteps_per_epoch\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msteps_per_epoch\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1039\u001b[0;31m                                         validation_steps=validation_steps)\n\u001b[0m\u001b[1;32m   1040\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1041\u001b[0m     def evaluate(self, x=None, y=None,\n",
      "\u001b[0;32m~/.virtualenvs/gdl_code/lib/python3.6/site-packages/keras/engine/training_arrays.py\u001b[0m in \u001b[0;36mfit_loop\u001b[0;34m(model, f, ins, out_labels, batch_size, epochs, verbose, callbacks, val_f, val_ins, shuffle, callback_metrics, initial_epoch, steps_per_epoch, validation_steps)\u001b[0m\n\u001b[1;32m    197\u001b[0m                     \u001b[0mins_batch\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mins_batch\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtoarray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    198\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 199\u001b[0;31m                 \u001b[0mouts\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mins_batch\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    200\u001b[0m                 \u001b[0mouts\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mto_list\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mouts\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    201\u001b[0m                 \u001b[0;32mfor\u001b[0m \u001b[0ml\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mo\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mzip\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mout_labels\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mouts\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/.virtualenvs/gdl_code/lib/python3.6/site-packages/keras/backend/tensorflow_backend.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, inputs)\u001b[0m\n\u001b[1;32m   2713\u001b[0m                 \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_legacy_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minputs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2714\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2715\u001b[0;31m             \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minputs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   2716\u001b[0m         \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2717\u001b[0m             \u001b[0;32mif\u001b[0m \u001b[0mpy_any\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mis_tensor\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mx\u001b[0m \u001b[0;32min\u001b[0m \u001b[0minputs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/.virtualenvs/gdl_code/lib/python3.6/site-packages/keras/backend/tensorflow_backend.py\u001b[0m in \u001b[0;36m_call\u001b[0;34m(self, inputs)\u001b[0m\n\u001b[1;32m   2669\u001b[0m                                 \u001b[0mfeed_symbols\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2670\u001b[0m                                 \u001b[0msymbol_vals\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2671\u001b[0;31m                                 session)\n\u001b[0m\u001b[1;32m   2672\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrun_metadata\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2673\u001b[0m             \u001b[0mfetched\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_callable_fn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0marray_vals\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrun_metadata\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrun_metadata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/.virtualenvs/gdl_code/lib/python3.6/site-packages/keras/backend/tensorflow_backend.py\u001b[0m in \u001b[0;36m_make_callable\u001b[0;34m(self, feed_arrays, feed_symbols, symbol_vals, session)\u001b[0m\n\u001b[1;32m   2621\u001b[0m             \u001b[0mcallable_opts\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrun_options\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mCopyFrom\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrun_options\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2622\u001b[0m         \u001b[0;31m# Create callable.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2623\u001b[0;31m         \u001b[0mcallable_fn\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msession\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_make_callable_from_options\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcallable_opts\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   2624\u001b[0m         \u001b[0;31m# Cache parameters corresponding to the generated callable, so that\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2625\u001b[0m         \u001b[0;31m# we can detect future mismatches and refresh the callable.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/.virtualenvs/gdl_code/lib/python3.6/site-packages/tensorflow/python/client/session.py\u001b[0m in \u001b[0;36m_make_callable_from_options\u001b[0;34m(self, callable_options)\u001b[0m\n\u001b[1;32m   1469\u001b[0m     \"\"\"\n\u001b[1;32m   1470\u001b[0m     \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_extend_graph\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1471\u001b[0;31m     \u001b[0;32mreturn\u001b[0m \u001b[0mBaseSession\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_Callable\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcallable_options\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1472\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1473\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/.virtualenvs/gdl_code/lib/python3.6/site-packages/tensorflow/python/client/session.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, session, callable_options)\u001b[0m\n\u001b[1;32m   1423\u001b[0m         \u001b[0;32mwith\u001b[0m \u001b[0merrors\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mraise_exception_on_not_ok_status\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mstatus\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1424\u001b[0m           self._handle = tf_session.TF_SessionMakeCallable(\n\u001b[0;32m-> 1425\u001b[0;31m               session._session, options_ptr, status)\n\u001b[0m\u001b[1;32m   1426\u001b[0m       \u001b[0;32mfinally\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1427\u001b[0m         \u001b[0mtf_session\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTF_DeleteBuffer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0moptions_ptr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mKeyboardInterrupt\u001b[0m: "
     ]
    }
   ],
   "source": [
    "model.fit(x_train\n",
    "          , y_train\n",
    "          , batch_size=32\n",
    "          , epochs=10\n",
    "          , shuffle=True\n",
    "          , validation_data = (x_test, y_test))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "model.layers[6].get_weights()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# analysis"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "10000/10000 [==============================] - 10s 969us/step\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[0.9717613816261291, 0.654800009727478]"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.evaluate(x_test, y_test, batch_size=1000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "CLASSES = np.array(['airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck'])\n",
    "\n",
    "preds = model.predict(x_test)\n",
    "preds_single = CLASSES[np.argmax(preds, axis = -1)]\n",
    "actual_single = CLASSES[np.argmax(y_test, axis = -1)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x216 with 10 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "n_to_show = 10\n",
    "indices = np.random.choice(range(len(x_test)), n_to_show)\n",
    "\n",
    "fig = plt.figure(figsize=(15, 3))\n",
    "fig.subplots_adjust(hspace=0.4, wspace=0.4)\n",
    "\n",
    "for i, idx in enumerate(indices):\n",
    "    img = x_test[idx]\n",
    "    ax = fig.add_subplot(1, n_to_show, i+1)\n",
    "    ax.axis('off')\n",
    "    ax.text(0.5, -0.35, 'pred = ' + str(preds_single[idx]), fontsize=10, ha='center', transform=ax.transAxes) \n",
    "    ax.text(0.5, -0.7, 'act = ' + str(actual_single[idx]), fontsize=10, ha='center', transform=ax.transAxes)\n",
    "    ax.imshow(img)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "gdl_code",
   "language": "python",
   "name": "gdl_code"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
